package com.cskaoyan.javase.file._0introduction;

/**
 * File类的引入
 * 首先，学习File类最核心的一点，就是：
 * File类是文件和目录（文件夹）路径名的抽象表达形式。
 * File类不关心诸如“这个路径到底合不合法”、“这个路径下是否存在相应文件”等等问题。甚至你可以简单粗暴的认为：
 * File类对象就是存储了一个文件（目录）路径字符串的对象。
 *
 * 文件路径名
 * win: 有盘符的概念 带盘符的就是绝对路径 路径分隔符是"\\"
 * linux,macOS,unix: 有根目录"/"的概念 带根目录"/"的就是绝对路径 路径分隔符是"/"
 *
 * 既然相对路径不能唯一确定位置,那么它存在的意义是什么?相对路径如何确定一个文件呢?
 * 相对路径还缺少一个"相对于谁的概念",只要搞清楚这个概念,相对路径就能够唯一的确定位置
 * 比如"a.txt"是相对路径,假如它相对于"c:\\",那么实际上它表示文件"c:\\a.txt"
 *
 * 相对路径 vs 绝对路径 优缺点
 * E:\idea_space\47th\Java47th\13-file\src\com\cskaoyan\javase\file\_0introduction\Demo.java
 * "Demo.java"相对于"E:\idea_space\47th\Java47th\13-file\src\com\cskaoyan\javase\file\_0introduction"
 *
 * 相对路径名更加简短,更加便利,安全性较差,会受外界环境影响
 * 绝对路径直接唯一确定,安全性很高,不受外界任何环境影响,但是它比较麻烦
 * 实际开发中,请大家根据情况选择路径,一般来说,相对路径更常用(用的时候需要保证外界环境稳定)
 *
 * (重要)IDEA工程中写代码,相对路径是相对于谁呢?
 * 是相对于当前的project的工作目录
 * 可以用下列代码获取工作目录
 * System.out.println(System.getProperty("user.dir"));
 * 默认情况下,是当前project的根目录(也就是第一个module的根目录)
 *
 * @since 09:53
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // System.out.println("\");
        System.out.println(System.getProperty("user.dir"));
    }
}
